home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / dos / diverses / cexpress / screen / memmap8.asm < prev    next >
Encoding:
Assembly Source File  |  1989-05-03  |  1.1 KB  |  46 lines

  1. ;void  memory_map_byte(character,offset);
  2. ;  char  character;
  3. ;  unsigned short  offset;
  4.  
  5.     EXTRN  _memory_model:byte
  6.     EXTRN  _video_buffer:word
  7.     EXTRN  _snow_protect:byte
  8.  
  9. _TEXT    SEGMENT BYTE PUBLIC 'CODE'
  10.     ASSUME CS:_TEXT
  11.     PUBLIC _memory_map_byte
  12. _memory_map_byte proc near
  13.     push bp            ;
  14.     mov  bp,sp        ;set stack frame
  15.     push di            ;
  16.     cmp  _memory_model,0    ;near or far?
  17.     jle  begin        ;jump if near
  18.     inc  bp            ;else add 2 to BP
  19.     inc  bp            ;
  20. begin:    mov  ax,_video_buffer    ;fetch video buffer address
  21.     mov  es,ax        ;move to ES
  22.     mov  di,[bp+6]        ;char offset in buffer
  23.     mov  bl,[bp+4]        ;char in BL
  24.     cmp  _snow_protect,0    ;protect against snow?
  25.     je   L3            ;jump ahead if not
  26.     mov  dx,3dah        ;status byte address
  27. L1:    in   al,dx        ;get status byte
  28.     test al,1        ;test bit
  29.     jnz  L1            ;loop till 0
  30.     cli            ;disable interrupts
  31. L2:    in   al,dx        ;get status byte
  32.     test al,1        ;test bit
  33.     jz   L2            ;loop till 1
  34. L3:    mov  ax,bx        ;get character
  35.     stosb            ;write it
  36.     sti            ;reenable interrupts
  37.     pop  di            ;
  38.     pop  bp            ;
  39.     cmp  _memory_model,0    ;quit
  40.     jle  quit        ;
  41.     db   0CBh        ;RET far
  42. quit:    ret            ;RET near
  43. _memory_map_byte endp
  44. _TEXT    ENDS
  45.     END
  46.